package edu.hrbeu.crc.service;

import com.baomidou.mybatisplus.extension.service.IService;
import edu.hrbeu.crc.pojo.dto.BillDTO;
import edu.hrbeu.crc.pojo.dto.ConsumptionDTO;
import edu.hrbeu.crc.pojo.dto.MonthConsumptionDTO;
import edu.hrbeu.crc.pojo.entity.Bill;
import edu.hrbeu.crc.pojo.query.BillChatQuery;
import edu.hrbeu.crc.pojo.query.BillQuery;
import edu.hrbeu.crc.pojo.result.PageResult;
import edu.hrbeu.crc.pojo.vo.*;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

public interface BillService extends IService<Bill> {
    /**
     * 添加账单
     * @param billDTO
     */
    boolean add(BillDTO billDTO);

    /**
     * 分页查询
     * @param billQuery
     * @return
     */
    PageResult<BillPageVO> queryBillByPage(BillQuery billQuery);

    /**
     * 根据id查询
     * @param id
     * @return
     */
    BillVO getBill(Integer id);

    /**
     * 修改账单
     * @param billDTO
     */
    void updateBill(BillDTO billDTO);

    /**
     * 批量删除
     * @param ids
     */
    void delete(List<Integer> ids);

    /**
     * 获取消费占比图
     * @param consumptionDTO
     * @return
     */
    ConsumptionVO getConsumptionProportion(ConsumptionDTO consumptionDTO);

    /**
     * 获取月度趋势图
     * @param monthConsumptionDTO
     * @return
     */
    MonthlyTrendVO getMonthlyConsumptionTrend(MonthConsumptionDTO monthConsumptionDTO);

    /**
     * 导出账单
     * @param consumptionDTO
     * @param response
     */
    void getReport(ConsumptionDTO consumptionDTO, HttpServletResponse response);

    /**
     * 导入账单
     * @param file
     */
    void importBill(MultipartFile file);

    /**
     * 助手需要查询的账单信息
     * @param query
     * @return
     */
    List<BillChatVO> queryBills(BillChatQuery query);
}
